home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
17 Bit Software 6: Level 6
/
17 Bit - Level 6 (1998)(Epic Marketing)[!].iso
/
quartz
/
q0039.dms
/
q0039.adf
/
CHANGES
< prev
next >
Wrap
Text File
|
1990-12-04
|
12KB
|
329 lines
(c) 1990 S.Hawtin.
Permission is granted to copy this file provided that:
1) It is not used for commercial gain
2) This notice is included in all copies
3) Altered copies are marked as such
No liability is accepted for the contents of the file.
CHANGES within NorthC
This file outlines some of the changes that have occurred to NorthC
between releases.
Release 1.3
***********
1.3.1 static strings in functions
When I fixed initialised static arrays in functions I forgot about strings,
these have now been fixed.
1.3.2 bsr in crt0.asm
The startup routine in "crt0.asm" incorrectly called the _main() function
with a "bsr __main", this would generate a 16 bit offset rather than the
required 32 bit offset. The call has been changed to a jsr.
1.3.3 realloc
The realloc() function did not return the correct value, this has been
fixed, also the function did not accept NULL as the value for the pointer.
1.3.4 && and ||
The && and || operators caused some problems, they used the instruction
"clr d0" where they should have used "clr.l d0".
1.3.5 cc (from Richard Johnston)
The "cc" program used the command "a68k" rather than "a68k -g", this
caused cc to always fail in NorthC 1.2.
1.3.6 Floating point comparisons
The floating point compare function had a bug, causing the less than
function to fail, this has been fixed by a new version of the compiler.
This also caused the floating point formats in printf() to fail.
1.3.7 Large values in switch statements
There was a bug that caused large values in switch statements to compile
incorrectly, this has now been fixed.
1.3.8 addq.w after function calls (from M.Combs)
The compiler used to reset the stack pointer with an "addq.w" operation
after every function call, this would not work correctly if the stack
pointer was close to a block boundary.
1.3.9 definition of WORD in types.h
The file "types.h" defined a WORD as an unsigned short, this is wrong, a
WORD should be signed.
1.3.10 Examples
For this release I have again changed the set of examples, I have
included an initial port of the IFF reading programs that were placed in
the public domain by Electronic Arts, I have extended the "fortune" example
to use the speech device, and I have used the "disass" program as the
basis for a more powerfull program for dumping out object files. All these
changes do mean that some of the previous examples have been removed, get
them from old releases of NorthC if you are really interested.
1.3.11 Interrupts
I have made a first attempt to implement interrupts in NorthC, at the
moment NorthC programs check for interupts whenever a character is written
to a file or the screen. If an interupt is detected then a signal is raised
and the function set up by signal() is called. I should be able to use the
Amiga signals to interrupt asynchronusly, but I have yet to get it working
fully. There is a new default flag "_WithIntrCheck" set this to 0 in
"defaults.c" to disable interrupts, if you want to check interrupts, for
example in an extended loop you should call _CheckIntr() for example
for(i=0;i<1000000;++i)
{/* Perform some long calculation */
foo = frobnicate(i);
/* Check to see if the user has hit <Control-C> */
_CheckIntr();
}
will test for interrupt characters each time round the loop.
Release 1.2
***********
1.2.1 A68K
A new version of A68K is being used, this allows the use of two
flags,"-g" and "-q". The "-q" flag prevents A68K from outputting as it
assembles, unless it has an error message to report. The "-g" flag makes
all undefined symbols into globals, this means that NorthC does not need
to add lots of "XREF" calls. The "make" program has been altered to take
advantage of the new "a68k".
1.2.2 "top"
The "top" optimiser has been ported from Sozobon C on FISH 314, this
will reduce the size of object code. Because it takes some time it should
only be used when you don't mind waiting for compilations. The code has
been slightly modified to work with NorthC. The optimiser does not seem
to make as much difference as I would expect, I suspect that I have
introduced a bug with my changes.
1.2.3 strtol()
Another bug in strtol() has been fixed, when the number filled the
string the wrong value was returned. Maybe this will fix strtol() for good.
1.2.4 UNIX library
A library of UNIX style functions has been implemented, these are to
make "a68k" work. These functions are for porting programs from UNIX and
MSDOS, once the code is ported it would be best to convert it to "proper"
ANSI functions. See the documentation file for details.
1.2.5 More examples
I will release NorthC 1.2 as a two disk set, this will allow me to
release more of the source code, and more examples. I will attempt to put
all the essential code on one disk and examples on the other. From now on
I will only release NorthC in compressed form. The file "CONTENTS" will
shows which code is on each disk.
1.2.6 Static arrays in functions
The bug with static arrays in functions has now been fixed.
1.2.7 Preprocessor directives
The bug with #undef reported by Martin Combs has now been fixed, a new
ANSI style preprocessor directive #elif has been implemented.
1.2.8 Clearing address registers
The bug that caused incorrect assembly code to be generated when address
registers were set to zero has been fixed.
1.2.9 New NorthC command line flags
NorthC will now accept a "-C" flag, if this is set all BSS and DATA
segments will be placed in chip memory.
1.2.10 Default console
The default console is now "con:20/20/400/100/NorthC Program" to allow
programs more chance to run if you boot up with old disks that do not
support the "newcon:" device.
1.2.11 "crt0.asm"
The "crt0.asm" file has been tidied up following suggestions from Martin
Combs, thanks Martin.
1.2.12 Mini-hello, translate and fortune
Three new example programs have been placed on the examples disk,
"mini-hello" shows how to create small 'C' programs, "fortune" prints out
inane phrases and "translate" translates ASCII files into a format that
word processors like.
1.2.13 4 byte integers
I have converted the 'C' library to use 4 byte integers, I have used the
changes from Jeff Lydiat to convert the compiler to use 4 byte integers as
well.
1.2.14 Workbench arguments
I have changed the startup so that if a NorthC program is started from
the workbench then it will have some arguments passed in the "argc" and
"argv" arguments. If the icon is a tool type then "argc" will be 1 and
"argv[0]" will be the name of the program, if the icon is of project type
then "argc" will be 2 and "argv[1]" will be the name of the icon that
called the tool.
1.2.15 New variables
The variables "_WBmsg" and "_Task" are now available for 'C' to
manipulate, "_WBmsg" contains a pointer to the workbench message if the
program was started from the workbench, "_Task" contains a pointer to the
program's task structure.
1.2.16 _stdoutUnbuffered
A new integer variable has been defined, _stdoutUnbuffered, if the value
of this variable is 0 then the "stdout" FILE will buffer its output.
1.2.17 "defaults.c"
The variables that control the behaviour of the program have been
collected into a single file "defaults.c" you can change the behaviour by
editing this file and including the resulting object file in your program.
1.2.18 Other things
Again most of the changes for this release have not been documented, if
you are updating from an earlier version you should be careful. However the
good news is that
Draw(rport,20,60);
will no longer trash your machine.
Release 1.1
***********
1.1.1 Static variables
The bug with static variables within functions has been fixed.
1.1.2 AmigaDOS stubs
The stubs for most AmigaDOS libraries have been added, the only 1.3
libraries that are not covered are "mathieeedoubbas.library" and
"mathieeedoubtrans.library". The OpenLibrary() function has been extended
to, detect the opening of standard libraries, note the library pointer for
'C' stubs, and cause the automatic closing of libraries when exit() is
called or the program terminates.
1.1.3 Time functions
Most of the functions in the ANSI 'C' time package have now been added
to the library, the only remaining missing function is mktime().
1.1.4 Floating point
Floating point numbers now work, the compiler will now recognise them,
the subtraction and division functions take their arguments in the correct
order, the printf() function can use floating point formats, and so on. I
have not extended scanf() to cover floating point numbers yet, see "Bugs.doc".
1.1.5 New functions
A number of functions have been added to the 'C' library, these
include_div(), _ldiv(), abs(), atan2(), atexit(), bsearch(), fmod(),
frexp(), labs(), ldexp(), memchr(), memcmp(), memmove(), memset(), modf(),
perror(), qsort(), rand(), rename(), srand(), strerror(), strtod() and
tmpnam()see the "libc.doc" file for details of the latest set of functions
that are included in the library.
1.1.6 New Definitions
A number of definitions have been added to the 'C' include files, these
include atof(), atoi(), atol(), EDOM and ERANGE the "libc.doc" file gives
details.
1.1.7 Locale and multibyte support
Having decided not to support the locale and multibyte characters in
ANSI 'C' I have explained ways to emulate the functions in the "libc.doc"
file.
1.1.8 File handling
The file handling functions have been tidied up, this includes the
implementation of some previously missing functions, fgetpos(), freopen(),
fread(), fseek(), fsetpos(), fwrite(), ftell() and rewind(). In addition
the functions fopen() and fflush() have been extended to allow files to be
opened with all the ANSI file modes. This has been made easier by the
fact binary files and text files are the same.
1.1.9 strtol()
The strtol() function was incorrectly defined to take a long value for
the base. Once this was fixed the function would fail if a base of zero
was used, this has been fixed as well.
1.1.10 Documentation
The file "AmigaDOS.doc" has been added, this lists all the AmigaDOS
functions that are supported by this version of the 'C' library. The file
"CHANGES", this file, lists all the changes from previous versions of NorthC.
1.1.11 Make program
A version of "make" has been created and added to the environment, some
documentation for the program has been created. This is not a full
implementation, for example it does not support macros, however it does
most things that are required.
1.1.12 GNU-GO
The program "gnu-go" has been removed from the disk, if you are
interested in the game of "go" you can get the source from NorthC 1.0,
check out your local public domain supplier. Fish 340 contains a copy, if
you can get the "unpack" script file to work.
1.1.13 CRender
An example program "CRender" has been created, this will provide a
simple display of a three dimensional object rotating in space. The
directory "NorthC:examples/CRender" gives some documentation.
1.1.14 Workbench directory
When a program is called from the workbench the directory is now set
correctly.
1.1.15 Other things
Most of the changes for this release have not been documented, if you
are updating from an earlier version (either 1.0 or 0.1) you should be
careful. Beware of weirdness arising from the fact that all AmigaDOS
routines take long arguments,
Draw(rport,20,60);
for example will almost certainly trash your machine.
Release 1.0
***********
This was the initial public release of NorthC, it includes a 'C'
compiler and library. Some of the numerous bugs and omissions are
documented in "Bugs.doc" and "libc.doc".